// 公共小工具
// const  formatMoney = (num: number, decimal: number = 2): string =>{
//     let s = num.toString();
//     if (s.includes('.')) {
//       s = s.replace('.', ',');
//       s = s.replace(/,(\d{3})/g, '$1,');
//     } else {
//       s = s.replace(/^(\d*)$/, '$1,');
//     }
//     return s.replace(/,(\d+)/, '.$1');
//   }


// export { formatMoney } 
// 单个文件下载  jpg jpeg png zip pdf
const downloadFile = async(file:any, filename: string) => { 
  const url = file.url
  if(!filename){
    filename = file.originalFileName
  }
  try {
    const response = await fetch(url, {
      method: 'GET',
      mode: 'cors', // 确保跨域请求合法
    });

    if (!response.ok) throw new Error('下载失败');

    const blob = await response.blob();
    const blobUrl = URL.createObjectURL(blob);

    const a = document.createElement('a');
    a.href = blobUrl;
    a.download = filename; // 指定文件名
    a.style.display = 'none';
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
    URL.revokeObjectURL(blobUrl);
  } catch (error) {
    console.error('下载失败:', error);
    // alert('跨域图片下载失败，请确保服务器允许 CORS');
  }
}

// 多个文件同时下载 并且输出为一个zip压缩包形式
// 图片：.jpg, .png, .gif
// 文档：.pdf, .docx, .xlsx
// 压缩包：.zip, .rar（作为文件嵌入）
// 音视频、字体等
import JSZip from 'jszip'
import { saveAs } from 'file-saver'
import { ElMessage,ElMessageBox } from 'element-plus';
const batchDownloadFile = async(fileList:any, zipName: string) => {
  // const files = [
  //     { url: '/files/report.pdf', name: '报告.pdf' },
  //     { url: '/images/photo.jpg', name: '照片.jpg' },
  //     { url: '/docs/manual.docx', name: '使用手册.docx' },
  //     { url: '/data/archive.zip', name: '数据包.zip' }
  // ];
  let files = []
  try {
    files = JSON.parse(fileList)
  }catch(error) {
    files = fileList
  }
  if(files && files.length > 0){
    const zip = new JSZip();
    try {
      // 并行下载所有文件
      const promises = files.map(async (file) => {
        const response = await fetch(file.url);
        if (!response.ok) throw new Error(`下载失败: ${file.url}`);
        const blob = await response.blob();
        // 将文件添加到 zip 中，路径可嵌套，如 "docs/报告.pdf"
        zip.file(file?.originalFileName, blob);
      });
      // 等待所有文件下载完成
      await Promise.all(promises);
      // 生成 zip 文件
      const zipBlob = await zip.generateAsync({ type: 'blob' });
      // 触发下载
      zipName = zipName+ '箱照';
      saveAs(zipBlob, zipName);
    } catch (error) {
      console.error('打包失败:', error);
    }
  }else {
    ElMessage.warning('暂无可下载箱照！')
  }
}
export default { 
  downloadFile,
  batchDownloadFile 
}